package com.itfenghuang.day13;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

/*
    多线程实现方式三:实现Callable
 */
public class A09_Callable {
    /*
    1.实现步骤
        1).自定义一个类Callable接口
        2).重写call()方法
        3).测试类中测试
            1.创建自定义类对象
            2.创建FutureTask对象,将自定义对象传进去
            3.创建线程对象,将FutureTask对象传进去
            4.开启线程
     */
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        MyCallable mc = new MyCallable();
        FutureTask ft = new FutureTask<>(mc);
        Thread t = new Thread(ft);
        t.start();
//        获取线程任务的返回结果
//        一定是在线程执行完之后才有返回值
        System.out.println(ft.get());
    }
}
class MyCallable implements Callable<String>{

    @Override
    public String call() throws Exception {
        for (int i = 0; i < 10; i++) {
            System.out.println("牛批格拉斯"+i);
        }
        return  "牛批格拉斯拉稀摆带";
    }
}